As microprocessor speed has increased, software programmers have developed an increasing number of complex software applications that can run on microprocessors. As one example, microprocessors having central processing unit (CPU) clock rates greater than several hundred megahertz permit a variety of audio, video, graphics, and digital signal processing functions to be implemented largely or entirely in software. This has permitted complex software applications to be utilized in a variety of consumer devices that have one or more microprocessors, such as personal computers, media center personal computers, and personal video recorders.
A variety of consumer devices have more than one software application capable of running simultaneously on different execution threads of a microprocessor. One problem that occurs is that a complex software application may consume too large a percentage of the processing power of a microprocessor to permit another software application to load and execute properly. This may result, for example, in other software applications requiring a longer time to load and run slower than is acceptable by a consumer because the complex software consumes more than its fair share of the microprocessor's resources.
The problem of running complex software applications on microprocessors is exacerbated by variations in processor capability. During the manufacture, maintenance, or upgrading of a consumer device, different types of microprocessors may be utilized in the consumer device, which creates a potential variability in the microprocessor capability.
Additionally, the problem of running complex software applications on microprocessors is exacerbated in systems where a user can add or upgrade software. For example, many personal computer systems permit consumers to load new software or make software upgrades that increase the complexity of existing software applications. Thus, a complex software application that works well with other software when consumers first buy their personal computer system may not coexist well with other programs after the consumer has added/upgraded other software applications.
Consumer devices also include other types of integrated circuit processors besides microprocessor CPUs, such as graphics processing units (GPUs), application specific integrated circuits (ASICs), and dedicated specialty processors. Analogous issues occur when complex software is run on such other integrated circuit processors.
Therefore what is desired is an improved apparatus, system, method, and computer program product to manage processor utilization.